#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
// int main()
// {
//     umask(0);
//     int fd = open("myfile", O_WRONLY | O_CREAT, 0644);
//     if (fd < 0)
//     {
//         perror("open");
//         return 1;
//     }
//     int count = 5;
//     const char *msg = "hello bit!\n";
//     int len = strlen(msg);
//     while (count--)
//     {
//         write(fd, msg, len); // fd: 后面讲， msg：缓冲区首地址， len: 本次读取，期望写入多少个字节的数据。 返回值：实际写了多少字节数据
//     }
//     close(fd);
//     return 0;
// }

int main()
{

    // int fd = open("log.txt", O_WRONLY|O_CREAT|O_TRUNC, 0666);
    // int fd = open("log.txt", O_WRONLY|O_CREAT|O_APPEND, 0666);
    int fd = open("log.txt", O_RDONLY);
    dup2(fd, 0);
    char buffer[1024];
    while (1)
    {
        // 默认情况，stdin键盘中读取，默认是要阻塞
        char *s = fgets(buffer, sizeof(buffer), stdin); // stdin -> FILE * -> _fileno
        if (s == NULL)
            break;
        printf("file content: %s", buffer);
    }
    // printf("hello hahahaha\n");

    // 0 1 2
    // close(1);
    ////open("log.txt", O_WRONLY|O_CREAT|O_TRUNC, 0666);
    // open("log.txt", O_WRONLY|O_CREAT|O_APPEND, 0666);
    // printf("hello printf..................\n");
    // fprintf(stdout, "hello fprintf...........\n");

    // open("log.txt", O_RDONLY); // 0
    // printf("fd: %d\n", fd);
    // int a = 0;
    // scanf("%d", &a); // stdin -> _fileno = 0
    // printf("%d\n", a+100);

    //    int fd = open("log.txt", O_RDONLY);
    //    if(fd == -1)
    //    {
    //        perror("open");
    //        return 1;
    //    }
    //    char buffer[1024];
    //    ssize_t s = read(fd, buffer, sizeof(buffer));
    //    if(s>0)
    //    {
    //        buffer[s] = 0;
    //        printf("%s", buffer);
    //    }
    //    close(fd);

    // printf("%d\n", stdin->_fileno);
    // printf("%d\n", stdout->_fileno);
    // printf("%d\n", stderr->_fileno);
    // umask(0);
    // int fd1 = open("log1.txt", O_WRONLY|O_CREAT|O_TRUNC, 0666);
    // int fd2 = open("log2.txt", O_WRONLY|O_CREAT|O_TRUNC, 0666);
    // int fd3 = open("log3.txt", O_WRONLY|O_CREAT|O_TRUNC, 0666);
    // int fd4 = open("log4.txt", O_WRONLY|O_CREAT|O_TRUNC, 0666);
    // int fd5 = open("log5.txt", O_WRONLY|O_CREAT|O_TRUNC, 0666);
    ////int fd = open("log.txt", O_WRONLY|O_CREAT|O_APPEND, 0666);
    ////if(fd == -1)
    ////{
    ////    perror("open");
    ////    return 1;
    ////}

    // printf("fd: %d\n", fd1);
    // printf("fd: %d\n", fd2);
    // printf("fd: %d\n", fd3);
    // printf("fd: %d\n", fd4);
    // printf("fd: %d\n", fd5);

    // const char *str = "aaaa\n";
    // write(fd, str, strlen(str));

    // close(fd);
    return 0;
}

// #include <stdio.h>
// #include <sys/types.h>
// #include <sys/stat.h>
// #include <fcntl.h>
// #include <stdlib.h>
// int main()
// {
//     close(1);
//     int fd = open("myfile", O_WRONLY | O_CREAT, 00644);
//     if (fd < 0)
//     {
//         perror("open");
//         return 1;
//     }
//     printf("fd: %d\n", fd);
//     fflush(stdout);
//     close(fd);
//     exit(0);
// }

// #include <stdio.h>
// #include <sys/types.h>
// #include <sys/stat.h>
// #include <fcntl.h>
// #include <stdlib.h>
// int main()
// {
//     close(0);
//     int fd = open("test.txt", O_RDONLY);
//     if (fd < 0)
//     {
//         perror("open");
//         return 1;
//     }
//     int a = 0;
//     scanf("%d", &a);
//     printf("%d\n", a);
//     close(fd);
//     exit(0);
// }

// #include <stdio.h>
// #include <unistd.h>
// #include <fcntl.h>
// int main()
// {
//     int fd = open("./log", O_CREAT | O_RDWR);
//     if (fd < 0)
//     {
//         perror("open");
//         return 1;
//     }
//     close(1);
//     dup2(fd, 1);
//     for (;;)
//     {
//         char buf[1024] = {0};
//         ssize_t read_size = read(0, buf, sizeof(buf) - 1);
//         if (read_size < 0)
//         {
//             perror("read");
//             break;
//         }
//         printf("%s", buf);
//         fflush(stdout);
//     }
//     return 0;
// }